package cn.zwx.member.svc.service;

import cn.zwx.member.svc.domain.bo.CheckUserAddressExistBO;
import cn.zwx.member.svc.domain.entity.AddressEntity;
import java.util.List;

/**
 * @author zhangwenxue
 */
public interface AddressService {


    /**
     * 根据id查询信息
     * @param id 主键id
     * @return AddressEntity
     */
    AddressEntity selectById(Long id);

    /**
     * 根据id查询信息
     * @param userId 用户id
     * @return AddressEntity
     */
    List<AddressEntity> selectByUserId(String userId);


    /**
     * 新增地址信息
     * @param address 地址请求参数
     * @return 主键id
     */
    Long insert(AddressEntity address);

    /**
     * 修改地址信息
     * @param address 地址请求参数
     */
    void modify(AddressEntity address);

    /**
     * 删除地址信息
     * @param id 地址id
     */
    void delete(Long id);


    /**
     * 地址是否存在
     * @param bo 请求参数
     * @return 返回是否存在
     */
    boolean checkUserAddressExists(CheckUserAddressExistBO bo);

    /**
     * 取消默认地址
     * @param userId 用户id
     */
    void cancelUserDefaultAddress(String userId);

    /**
     * 查询用户默认地址信息
     * @param userId userId
     * @return AddressEntity
     */
    AddressEntity selectDefaultUserAddress(String userId);
}
